# $Id$
# Maintainer: AndyRTR <andyrtr@archlinux.org>
# Maintainer: Bartłomiej Piotrowski <bpiotrowski@archlinux.org>

# ALARM: Kevin Mihelich <kevin@archlinuxarm.org>
#  - make build-nocheck: unit tests take a huge amount of time on ARM

buildarch=20

pkgbase=libreoffice-fresh
pkgname=('libreoffice-fresh-sdk' 'libreoffice-fresh')
_LOver=5.0.1.2
pkgver=5.0.1
pkgrel=1
arch=('i686' 'x86_64')
license=('LGPL3')
url="http://www.libreoffice.org/"
makedepends=('curl>=7.20.0' 'hunspell>=1.2.8' 'python>=3.4' 'libwpd>=0.9.2' 'libwps'
	'neon>=0.28.6' 'pango' 'nspr' 'libjpeg' 'libxrandr' 'libgl' 'dbus-glib'
	'libxslt' 'redland' 'icu' 'hyphen' 'lpsolve' 'gcc-libs' 'sh' 'graphite'
	'lcms2' 'poppler>=0.24.0' 'libvisio' 'libetonyek' 'libodfgen' 'libcdr'
	'libmspub' 'harfbuzz-icu' 'glew' 'nss' 'clucene' 'hicolor-icon-theme'
	'desktop-file-utils' 'shared-mime-info' 'gtk2' 'xdg-utils' 'gst-plugins-base-libs'
	'glu' 'sane' 'perl-archive-zip' 'zip' 'unzip' 'unixodbc' 'apache-ant'
	'gperf' 'kdelibs' 'gtk3' 'cppunit' 'beanshell2' 'vigra' 'clucene'
	'junit' 'libmythes' 'libwpg'  'mesa' 'java-environment' 'postgresql-libs'
	'bluez-libs' 'harfbuzz-icu' 'gdb' 'doxygen'  'libatomic_ops' 'mdds' 'glew'
	'apr' 'serf' 'chrpath' 'ttf-liberation' 'glm' 'libxinerama' 'libpagemaker'
	'libabw' 'libmwaw' 'libe-book')

_mirror="http://download.documentfoundation.org/libreoffice/src/${pkgver}"
#_mirror="http://dev-builds.libreoffice.org/pre-releases/src"
_additional_source_url="http://dev-www.libreoffice.org/src"
_additional_source_url2="http://dev-www.libreoffice.org/extern"
source=(${_mirror}/libreoffice{,-help,-translations}-${_LOver}.tar.xz{,.asc}
	${_additional_source_url}/d6eef4b4cacb2183f2bf265a5a03a354-boost_1_55_0.tar.bz2
	${_additional_source_url}/1f24ab1d39f4a51faf22244c94a6203f-xmlsec1-1.2.14.tar.gz
	${_additional_source_url}/35c94d2df8893241173de1d16b6034c0-swingExSrc.zip
	${_additional_source_url}/798b2ffdc8bcfe7bca2cf92b62caf685-rhino1_5R5.zip
	${_additional_source_url}/a7983f859eafb2677d7ff386a023bc40-xsltml_2.1.2.zip
	${_additional_source_url}/commons-logging-1.2-src.tar.gz
	${_additional_source_url}/8ab049135b2d15313da5d9f0656894a1-commons-lang3-3.3.1-src.tar.gz
	${_additional_source_url}/2c9b0f83ed5890af02c0df1c1776f39b-commons-httpclient-3.1-src.tar.gz
	${_additional_source_url}/048751f3271906db5126ab76870444c4-commons-codec-1.9-src.zip
	${_additional_source_url}/eeb2c7ddf0d302fba4bfc6e97eac9624-libbase-1.1.6.zip
	${_additional_source_url}/39bb3fcea1514f1369fcfc87542390fd-sacjava-1.3.zip
	${_additional_source_url}/3404ab6b1792ae5f16bbd603bd1e1d03-libformula-1.1.7.zip
	${_additional_source_url}/97b2d4dba862397f446b217e2b623e71-libloader-1.1.6.zip
	${_additional_source_url}/f94d9870737518e3b597f9265f4e9803-libserializer-1.1.6.zip
	${_additional_source_url}/8ce2fcd72becf06c41f7201d15373ed9-librepository-1.1.6.zip
	${_additional_source_url}/3bdf40c0d199af31923e900d082ca2dd-libfonts-1.1.6.zip
	${_additional_source_url}/ace6ab49184e329db254e454a010f56d-libxml-1.1.7.zip
	${_additional_source_url}/db60e4fde8dd6d6807523deb71ee34dc-liblayout-0.2.10.zip
	${_additional_source_url}/10d61fbaa6a06348823651b1bd7940fe-libexttextcat-3.4.4.tar.bz2
	${_additional_source_url}/7681383be6ce489d84c1c74f4e7f9643-liborcus-0.7.0.tar.bz2
	${_additional_source_url}/0168229624cfac409e766913506961a8-ucpp-1.3.2.tar.gz
	${_additional_source_url}/language-subtag-registry-2015-06-08.tar.bz2
	${_additional_source_url}/CoinMP-1.7.6.tgz
	${_additional_source_url}/4b87018f7fff1d054939d19920b751a0-collada2gltf-master-cb1d97788a.tar.bz2
	${_additional_source_url}/OpenCOLLADA-master-6509aa13af.tar.bz2
	${_additional_source_url}/17410483b5b5f267aa18b7e00b65e6e0-hsqldb_1_8_0.zip
	${_additional_source_url}/Firebird-2.5.2.26540-0.tar.bz2
	${_additional_source_url}/libgltf/libgltf-0.0.2.tar.bz2
	${_additional_source_url}/d8bd5eed178db6e2b18eeed243f85aa8-flute-1.1.6.zip
	${_additional_source_url}/ba2930200c9f019c2d93a8c88c651a0f-flow-engine-0.9.4.zip
	${_additional_source_url}/5821b806a98e6c38370970e682ce76e8-libcmis-0.5.0.tar.gz
	${_additional_source_url}/libfreehand-0.1.1.tar.bz2
	${_additional_source_url}/36271d3fa0d9dec1632029b6d7aac925-liblangtag-0.5.1.tar.bz2
	${_additional_source_url2}/185d60944ea767075d27247c3162b3bc-unowinreg.dll
	make-pyuno-work-with-system-wide-module-install.diff
	libreoffice-fresh.sh libreoffice-fresh.csh)
noextract=(d6eef4b4cacb2183f2bf265a5a03a354-boost_1_55_0.tar.bz2
	1f24ab1d39f4a51faf22244c94a6203f-xmlsec1-1.2.14.tar.gz
	35c94d2df8893241173de1d16b6034c0-swingExSrc.zip
	798b2ffdc8bcfe7bca2cf92b62caf685-rhino1_5R5.zip
	a7983f859eafb2677d7ff386a023bc40-xsltml_2.1.2.zip
	commons-logging-1.2-src.tar.gz
	8ab049135b2d15313da5d9f0656894a1-commons-lang3-3.3.1-src.tar.gz
	2c9b0f83ed5890af02c0df1c1776f39b-commons-httpclient-3.1-src.tar.gz
	048751f3271906db5126ab76870444c4-commons-codec-1.9-src.zip
	eeb2c7ddf0d302fba4bfc6e97eac9624-libbase-1.1.6.zip
	39bb3fcea1514f1369fcfc87542390fd-sacjava-1.3.zip
	3404ab6b1792ae5f16bbd603bd1e1d03-libformula-1.1.7.zip
	97b2d4dba862397f446b217e2b623e71-libloader-1.1.6.zip
	f94d9870737518e3b597f9265f4e9803-libserializer-1.1.6.zip
	8ce2fcd72becf06c41f7201d15373ed9-librepository-1.1.6.zip
	3bdf40c0d199af31923e900d082ca2dd-libfonts-1.1.6.zip
	ace6ab49184e329db254e454a010f56d-libxml-1.1.7.zip
	db60e4fde8dd6d6807523deb71ee34dc-liblayout-0.2.10.zip
	10d61fbaa6a06348823651b1bd7940fe-libexttextcat-3.4.4.tar.bz2
	7681383be6ce489d84c1c74f4e7f9643-liborcus-0.7.0.tar.bz2
	0168229624cfac409e766913506961a8-ucpp-1.3.2.tar.gz
	language-subtag-registry-2015-06-08.tar.bz2
	CoinMP-1.7.6.tgz
	4b87018f7fff1d054939d19920b751a0-collada2gltf-master-cb1d97788a.tar.bz2
	OpenCOLLADA-master-6509aa13af.tar.bz2
	17410483b5b5f267aa18b7e00b65e6e0-hsqldb_1_8_0.zip
	Firebird-2.5.2.26540-0.tar.bz2
	libgltf-0.0.2.tar.bz2
	d8bd5eed178db6e2b18eeed243f85aa8-flute-1.1.6.zip
	ba2930200c9f019c2d93a8c88c651a0f-flow-engine-0.9.4.zip
	5821b806a98e6c38370970e682ce76e8-libcmis-0.5.0.tar.gz
	libfreehand-0.1.1.tar.bz2
	36271d3fa0d9dec1632029b6d7aac925-liblangtag-0.5.1.tar.bz2
	185d60944ea767075d27247c3162b3bc-unowinreg.dll)
validpgpkeys=('C2839ECAD9408FBE9531C3E9F434A1EFAFEEAEA3') # LibreOffice Build Team (CODE SIGNING KEY) <build@documentfoundation.org>
md5sums=('a47ad3fbfc1b1b665598e1c133692a19'
         'SKIP'
         '866e29eac8df9e106116e484e9068506'
         'SKIP'
         '44378180db18158fb68fa39d555e079d'
         'SKIP'
         'd6eef4b4cacb2183f2bf265a5a03a354'
         '1f24ab1d39f4a51faf22244c94a6203f'
         '35c94d2df8893241173de1d16b6034c0'
         '798b2ffdc8bcfe7bca2cf92b62caf685'
         'a7983f859eafb2677d7ff386a023bc40'
         'ce977548f1cbf46918e93cd38ac35163'
         '8ab049135b2d15313da5d9f0656894a1'
         '2c9b0f83ed5890af02c0df1c1776f39b'
         '048751f3271906db5126ab76870444c4'
         'eeb2c7ddf0d302fba4bfc6e97eac9624'
         '39bb3fcea1514f1369fcfc87542390fd'
         '3404ab6b1792ae5f16bbd603bd1e1d03'
         '97b2d4dba862397f446b217e2b623e71'
         'f94d9870737518e3b597f9265f4e9803'
         '8ce2fcd72becf06c41f7201d15373ed9'
         '3bdf40c0d199af31923e900d082ca2dd'
         'ace6ab49184e329db254e454a010f56d'
         'db60e4fde8dd6d6807523deb71ee34dc'
         '10d61fbaa6a06348823651b1bd7940fe'
         '7681383be6ce489d84c1c74f4e7f9643'
         '0168229624cfac409e766913506961a8'
         'd431bd8a70455be1fa8523fa633c005b'
         '1cce53bf4b40ae29790d2c5c9f8b1129'
         '4b87018f7fff1d054939d19920b751a0'
         '4ca8a6ef0afeefc864e9ef21b9f14bd6'
         '17410483b5b5f267aa18b7e00b65e6e0'
         '21154d2004e025c8a3666625b0357bb5'
         'd63a9f47ab048f5009d90693d6aa6424'
         'd8bd5eed178db6e2b18eeed243f85aa8'
         'ba2930200c9f019c2d93a8c88c651a0f'
         '5821b806a98e6c38370970e682ce76e8'
         '8cf70c5dc4d24d2dc4a107f509d2d6d7'
         '36271d3fa0d9dec1632029b6d7aac925'
         '185d60944ea767075d27247c3162b3bc'
         'dcb5ad3e5f7139227677ea064b075422'
         '4195735a80876ae812fca5736b50192a'
         'e7e4b3e70e99e5cba8f8dfcacf3b0d87')

prepare() {
	cd libreoffice-$_LOver

	# move external sources into place
	mkdir ${srcdir}/ext_sources &&	pushd ${srcdir}/ext_sources
	for source in "${noextract[@]}"; do
		ln -s ${srcdir}/$source .
	done
	popd

	# unowinreg.dll must be a file not a symlink or the result will become a broken symlink
	# /usr/share/libreoffice/sdk/classes/win/unowinreg.dll -> /build/libreoffice/src/185d60944ea767075d27247c3162b3bc-unowinreg.dll
	rm ${srcdir}/ext_sources/185d60944ea767075d27247c3162b3bc-unowinreg.dll
	cp -f ${srcdir}/185d60944ea767075d27247c3162b3bc-unowinreg.dll ${srcdir}/ext_sources

	# fix not upstreamable pyuno paths - patch taken from Debian
	patch -Np1 -i ${srcdir}/make-pyuno-work-with-system-wide-module-install.diff

	#use the CFLAGS but remove the LibO overridden ones
	for i in $CFLAGS; do
		case "$i" in
			-O?|-pipe|-Wall|-g|-fexceptions) continue;;
		esac
		ARCH_FLAGS="$ARCH_FLAGS $i"
	done

	# qt4 fix
	sed -i "s:qmake:qmake-qt4:g" configure.ac
}

build() {
	cd libreoffice-$_LOver

	# strip -s from Makeflags in case you use it to shorten build logs
	_MAKEFLAGS=${MAKEFLAGS/-s/}

	./autogen.sh --with-build-version="${_LOver} Arch Linux build-${pkgrel}" --with-vendor="Arch Linux" \
		--enable-split-app-modules \
		--with-parallelism=${_MAKEFLAGS/-j/} \
		--with-external-tar="${srcdir}/ext_sources" \
		--disable-fetch-external \
		--disable-verbose \
		--enable-release-build \
		--prefix=/usr --exec-prefix=/usr --sysconfdir=/etc \
		--libdir=/usr/lib --mandir=/usr/share/man \
		--with-lang="" \
		--enable-crashdump \
		--disable-avahi \
		--enable-dbus \
		--enable-evolution2\
		--enable-gio\
		--disable-gnome-vfs\
		--disable-kde\
		--enable-kde4\
		--enable-gtk3 \
		--disable-gstreamer-0-10 \
		--disable-gconf \
		--disable-lockdown \
		--enable-openssl \
		--enable-odk\
		--enable-orcus \
		--enable-python=system \
		--enable-scripting-beanshell \
		--enable-scripting-javascript \
		--disable-telepathy \
		--enable-ext-wiki-publisher \
		--enable-ext-nlpsolver \
		--without-fonts\
		--with-system-apr \
		--with-system-libcdr \
		--with-system-mdds\
		--without-myspell-dicts \
		--with-system-libvisio \
		--without-system-libcmis \
		--with-system-libmspub \
		--without-system-libexttextcat \
		--without-system-orcus \
		--without-system-liblangtag \
		--without-system-jfreereport \
		--without-system-apache-commons \
		--with-system-libodfgen \
		--with-system-libmwaw \
		--with-system-libetonyek \
		--without-system-libfreehand \
		--without-system-firebird \
		--with-system-libatomic-ops \
		--with-system-libebook \
		--with-system-libabw \
		--without-system-coinmp \
		--without-system-libgltf \
		--with-system-dicts \
		--with-external-dict-dir=/usr/share/hunspell \
		--with-external-hyph-dir=/usr/share/hyphen \
		--with-external-thes-dir=/usr/share/mythes \
		--with-system-beanshell \
		--with-system-cppunit\
		--with-system-graphite\
		--with-system-glew \
		--with-system-glm \
		--with-system-libwpg \
		--with-system-libwps \
		--with-system-redland\
		--with-system-serf \
		--without-system-npapi-headers \
		--with-jdk-home="/usr/lib/jvm/default" \
		--with-ant-home="/usr/share/apache-ant"\
		--without-system-boost\
		--with-system-icu \
		--with-system-cairo \
		--with-system-libs \
		--with-system-mythes \
		--with-system-headers \
		--without-system-hsqldb \
		--with-alloc=system \
		--with-system-clucene \
		--disable-dependency-tracking \
		--enable-hardlink-deliver

	touch src.downloaded
	make build-nocheck
	# use this if i686 fails
	#make || make CppunitTest_sw_ooxmlsdrexport VALGRIND=memcheck

	mkdir ${srcdir}/fakeinstall
	make DESTDIR=${srcdir}/fakeinstall distro-pack-install
}

#check() {
#	cd ${srcdir}/build
#	make check
#}

package_libreoffice-fresh-sdk() {
	pkgdesc="Software Development Kit for LibreOffice Fresh"
	depends=('libreoffice-fresh' 'gcc-libs' 'sh' 'make' 'zip' 'gcc' 'java-environment')
	provides=('libreoffice-sdk')
	conflicts=('libreoffice-still-sdk')

	for dir in $(grep -h ^%dir libreoffice-$_LOver/file-lists/sdk{,_doc}_list.txt); do
		install -dm755 ${pkgdir}/${dir/\%dir/}
	done

	for file in $(grep -h -v ^%dir libreoffice-$_LOver/file-lists/sdk{,_doc}_list.txt); do
		dirname=$(dirname $file)
		[[ -d ${pkgdir}/$dirname ]] || install -dm755 ${pkgdir}/$dirname
		mv ${srcdir}/fakeinstall/${file} ${pkgdir}/$file
	done

	# fix environment path to keep compatibility with other java-environments
	sed -i -e "s:\/usr\/lib\/jvm\/java-7-openjdk:\$J2SDKDIR:" \
		${pkgdir}/usr/lib/libreoffice/sdk/setsdkenv_unix.sh

	# fix permissions
	find ${pkgdir}/usr/lib/libreoffice/sdk/examples -type f -exec chmod -x {} +
}

package_libreoffice-fresh() {
	pkgdesc="LibreOffice branch which contains new features and program enhancements"
	depends=('curl>=7.20.0' 'hunspell>=1.2.8' 'python>=3.4' 'libwpd>=0.9.2' 'libwps'
		'neon>=0.28.6' 'pango' 'nspr' 'libjpeg' 'libxrandr' 'libgl' 'dbus-glib'
		'libxslt' 'redland' 'icu' 'hyphen' 'lpsolve' 'gcc-libs' 'sh' 'graphite'
		'lcms2' 'poppler>=0.24.0' 'libvisio' 'libetonyek' 'libodfgen' 'libcdr'
		'libmspub' 'harfbuzz-icu' 'glew' 'nss' 'clucene' 'hicolor-icon-theme'
		'desktop-file-utils' 'shared-mime-info' 'xdg-utils' 'glu' 'libpagemaker'
		'gst-plugins-base-libs' 'libxinerama' 'libabw' 'libmwaw' 'libe-book' 'libcups')
	optdepends=('java-runtime:     adds java support'
		'java-environment: required by extension-wiki-publisher and extension-nlpsolver'
		'pstoedit:         translates PostScript and PDF graphics into other vector formats'
		'libmythes:        for use in thesaurus'
		'beanshell2:       interactive java -- good for prototyping/macros'
		'vigra:            C++ computer vision library, usable in Basebmp'
		'libmspack:        library for Microsoft compression formats for use in FontOOo'
		'libwpg:           library for importing and converting WordPerfect Graphics format'
		'sane:             for scanner access'
		'unixodbc:         adds ODBC database support'
		'gst-plugins-base-libs: for multimedia content, e.g. in Impress'
		'libpaper:         takes care of papersize'
		'postgresql-libs:  for postgresql-connector'
		'gtk2:             for GTK2 integration'
		'gtk3:             for GTK3 integration'
		'kdelibs:          for KDE desktop integration')
	backup=(etc/libreoffice/sofficerc
		etc/libreoffice/bootstraprc
		etc/libreoffice/psprint.conf
		etc/profile.d/libreoffice-fresh.sh
		etc/profile.d/libreoffice-fresh.csh)
	install=$pkgbase.install
	provides=('libreoffice' 'libreoffice-en-US')
	conflicts=('libreoffice-still')

	mv fakeinstall/* ${pkgdir}/

	# put configuration files into place
	install -dm755 ${pkgdir}/etc/libreoffice
	install -m644 ${pkgdir}/usr/lib/libreoffice/program/{bootstraprc,sofficerc} \
		${pkgdir}/etc/libreoffice/
	install -m644 ${pkgdir}/usr/lib/libreoffice/share/psprint/psprint.conf \
	   	${pkgdir}/etc/libreoffice/

	# install dummy links to make them found by LibO
	cd ${pkgdir}/usr/lib/libreoffice/program/
	ln -vsf /etc/libreoffice/{bootstraprc,sofficerc} .
	cd ${pkgdir}/usr/lib/libreoffice/share/psprint/
	ln -vsf /etc/libreoffice/psprint.conf .

	# allow to preset desired VLC
	install -dm755 ${pkgdir}/etc/profile.d
	install -m755 ${srcdir}/libreoffice-fresh.{sh,csh} ${pkgdir}/etc/profile.d/

	# move bash-completion files to its new place
	install -dm755 ${pkgdir}/usr/share/bash-completion/completions
	mv ${pkgdir}/etc/bash_completion.d/libreoffice.sh \
		${pkgdir}/usr/share/bash-completion/completions/libreoffice.sh # fails
	rm -rf ${pkgdir}/etc/bash_completion.d

	# make pyuno find its modules
	install -dm755 ${pkgdir}/usr/lib/python3.4/site-packages
	ln -svf /usr/lib/libreoffice/program/uno.py \
		${pkgdir}/usr/lib/python3.4/site-packages/uno.py
	ln -svf /usr/lib/libreoffice/program/unohelper.py \
		${pkgdir}/usr/lib/python3.4/site-packages/unohelper.py

	# cleanup
	rm -rf ${pkgdir}/usr/share/libreoffice/sdk

	# add application descriptions
	install -v -m644 ${srcdir}/libreoffice-$_LOver/sysui/desktop/appstream-appdata/*.xml \
		${pkgdir}/usr/share/appdata

	# fix insecure rpath
	chrpath -d ${pkgdir}/usr/lib/libreoffice/program/libCbc.so.3
	chrpath -d ${pkgdir}/usr/lib/libreoffice/program/libOsi.so.1
	chrpath -d ${pkgdir}/usr/lib/libreoffice/program/libCoinMP.so.1
	chrpath -d ${pkgdir}/usr/lib/libreoffice/program/libCbcSolver.so.3
	chrpath -d ${pkgdir}/usr/lib/libreoffice/program/libOsiClp.so.1
	chrpath -d ${pkgdir}/usr/lib/libreoffice/program/libCgl.so.1
	chrpath -d ${pkgdir}/usr/lib/libreoffice/program/libClp.so.1
}
